#!/bin/bash
#--------------------------------------------------------------------
# 版权信息：版权所有(C) 2018，海致星图# 文件名称: hive_load_zstp_mongo.sh
# 创建者  : 王波# 创建时间: 2018-10-23# 版本信息: V1.0
# 描述    : json格式文件解析到HIVE中
# 部署路径：/bigdata/etl_dap/ODM/shell
# 输入参数: 无
# 使用举例: sh hive_load_zstp_mongo.sh 
#--------------------------------------------------------------------
# 修改历史：# 版本     更改日期       更改人           更改说明#
#--------------------------------------------------------------------
DATA_DIR=/mnt/changsha/all_json_data_tmp
#bigdata/data/INPUT/ZSTP/base_data
SQL_DIR=/data/dfs/dn/1/ware/bigdata/etl_dap/ODM/sql/mongo
LOG_DIR=/data/dfs/dn/1/ware/bigdata/etl_dap/ODM/log/mongo

#for LOAD_DT in `ls ${DATA_DIR[@]}| grep data_parsed| cut -d"_" -f3`
#do
#    cd ${DATA_DIR}/data_parsed_${LOAD_DT}_23/json/
    # 该调度需要配置依赖数据加载的过程 如果存在未解压的版本，则解压,同时有几个过程对这个文件进行操作，可错开时间
#    for v in `ls ${DATA_DIR[@]}/data_parsed_${LOAD_DT}_23/json/ | grep .gz| cut -d"." -f1`;
#    do
#        echo "unfold $v.gz"
#        gunzip -vfc $v.gz > $v.json
#        rm $v.gz
#    done
#done

cd ${DATA_DIR}

##遍历存在的文件夹，将JSON格式数据文件同步到HIVE中
for LOAD_TIME in `ls ${DATA_DIR[@]}| grep data_parsed| cut -d"_" -f3,4`
do  
	 LOAD_DT=${LOAD_TIME%_*}
     for file_name in `ls  ${DATA_DIR[@]}/data_parsed_${LOAD_TIME}/json| grep .json| cut -d"." -f1`
     do
	
##创建HIVE中间表
      hive -e "CREATE TABLE IF NOT EXISTS ODM.TMP_PRE_MONGO_${file_name}
         ( JSON   STRING )
		 PARTITIONED BY (LOAD_DT STRING  COMMENT 'ETL日期')
		ROW FORMAT DELIMITED";
      rownum=`cat ${DATA_DIR}/data_parsed_${LOAD_TIME}/json/${file_name}.json |wc -l`
      if [ $? -eq 0 ]; then
        if [ ${rownum} = 0 ];then
         echo " ${DATA_DIR}/data_parsed_${LOAD_TIME}/json/${file_name}.json 存在文件但数据量为0，无需加载." > ${LOG_DIR}/${file_name}.log
        continue;
        else 
          echo "LOAD ${DATA_DIR}/data_parsed_${LOAD_TIME}/json/${file_name}.json TO HIVE." >> ${LOG_DIR}/${file_name}.log
          hive -e "LOAD DATA LOCAL INPATH '${DATA_DIR}/data_parsed_${LOAD_TIME}/json/${file_name}.json' OVERWRITE INTO TABLE ODM.TMP_PRE_MONGO_${file_name} PARTITION(LOAD_DT='${LOAD_DT}')" >> ${LOG_DIR}/${file_name}.log
          if [ -f ${SQL_DIR}/hive_proc_zstp_${file_name}.sql ];then
              echo "${SQL_DIR}/hive_proc_zstp_${file_name}.sql 拆分脚本存在，开始拆分过程." >> ${LOG_DIR}/${file_name}.log
              hive -hivevar LOAD_DT=${LOAD_DT} -f "${SQL_DIR}/hive_proc_zstp_${file_name}.sql">> ${LOG_DIR}/${file_name}.log
          else
             echo "${SQL_DIR}/hive_proc_zstp_${file_name}.sql 拆分脚本不存在.请关注">> ${LOG_DIR}/${file_name}.log
             continue;
          fi
        fi 
      else
      echo "${file_name}.json文件不存在">> ${LOG_DIR}/${file_name}.log
      exit 1;
      fi
       if [ ! -d ${DATA_DIR}/data_parsed_${LOAD_TIME}/json/done ];then
        echo "${DATA_DIR}/data_parsed_${LOAD_TIME}/json/done目录不存在,创建存档目录"
        mkdir -p ${DATA_DIR}/data_parsed_${LOAD_TIME}/json/done
        else 
        echo "${DATA_DIR}/data_parsed_${LOAD_TIME}/json/done目录存在"
		
       fi 
      mvstate=`mv ${DATA_DIR}/data_parsed_${LOAD_TIME}/json/${file_name}.json ${DATA_DIR}/data_parsed_${LOAD_TIME}/json/done`
      if [ $? -eq 0 ]; then
	echo " ${DATA_DIR}/data_parsed_${LOAD_TIME}/json/${file_name}.json 已处理，在${DATA_DIR}/data_parsed_${LOAD_TIME}/json/done中存档." >> ${LOG_DIR}/${file_name}.log
      else 
	echo " ${DATA_DIR}/data_parsed_${LOAD_TIME}/json/${file_name}.json存档失败." >> ${LOG_DIR}/${file_name}.log
        continue;
      fi
      done
done




